<script charset="utf-8">


    class Person {
        constructor( n,a,s,h,j) {
            this.name=n;
            this.age=a;
            this.sex=s;
            this.hobby=h;
            this.job=j;
        }
        say(){
            console.log(`我是${this.name},我今年${this.age}岁，我是${this.sex}生，我的爱好是：${this.hobby},我是一个${this.job}`);
        }
        static type="人"
        static run(){
            console.log("我是一个不爱运动的人");
        }
    }


    class  Student  extends Person{ 

        constructor(n,a,s,h,j){
            // Must call super constructor in derived class before accessing 'this' or returning from derived constructor （子类自己的constructor和父类的constructor会冲突）
            // 在子类的constructor中，必须先使用super方法继承父类的属性

            super(n,a,s,h,j) // super代表的就是父类的constructor，调用父类的constructor（其实就是实现代码复用）

            // 在super之后，去初始化子类自己的属性

        }
        eat(){
            console.log("我爱吃零食");
        }
     }


    let s=new  Student("小明",8,"男",'写作业',"学生")
    console.log(s);
    console.log(s.name);//小明
    s.say()//我是小明,我今年8岁，我是男生，我的爱好是：写作业,我是一个学生

    console.log(Student.type);//我是一个不爱运动的人
    Student.run()//我是一个不爱运动的人











</script>